package com.rw.engine;


import java.lang.annotation.*;

/**
 * 用于拦截的公共注解
 * 所有使用公共拦截器复用代码的注解都需要继承自这个注解
 * 这样方便用于提高代码复用度。
 * 当然，这里的继承使用的是Spring自带的注解继承方式
 */
@Target({ElementType.METHOD, ElementType.TYPE, ElementType.ANNOTATION_TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Inherited
public @interface CommonLimit {
    /**
     * 拦截规则，所有拦截的注解都支持自定义拦截规则
     * 同样的，这个拦截规则有一个公共的父类，用于方便提高代码复用度
     */
    Class<? extends CommonFilterRule<? extends Annotation>>[] filterRule() default {};

    /**
     * 属性名字
     * 在Spring继承注解中，需要有这个属性名名字来指定覆写父类的哪个属性
     * <p>
     * 当然，这里的 filterRule 指的就是我们第一个，也是唯一的一个属性名字
     */
    String FILTER_RULE = "filterRule";
}
